package com.wunong.smart.address.starter.infrastructure.po;

import com.baomidou.mybatisplus.annotation.TableName;
import com.wunong.smart.domain.platform.entify.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

/**
 * 用户地址，id自增即可
 * 1.一个用户可以创建多个用户地址
 * 2.最多只有一个默认地址
 *
 * @author create by zealot.zt
 */
@Getter
@Setter
@ToString(callSuper = true)
@Entity
@Table(name = UserAddressPO.TABLE_NAME)
@TableName(UserAddressPO.TABLE_NAME)
public class UserAddressPO extends BaseEntity {

    public static final String TABLE_NAME = "user_address";

    /**
     * 用户编号，一个用户可以有多个地址
     */
    @Column(nullable = false)
    private Long userId;

    /**
     * 用户角色
     */
    private Integer userRole;

    /**
     * 国家编码
     */
    @Column(nullable = false)
    private Integer nationCode;

    /**
     * 省编码
     */
    @Column(nullable = false)
    private Long provinceCode;

    /**
     * 城市编码
     */
    @Column(nullable = false)
    private Long cityCode;

    /**
     * 区域编码
     */
    @Column(nullable = false)
    private Long areaCode;

    /**
     * 街道编码
     */
    @Column(length = 64)
    private String roadCode;

    /**
     * 详细的地址信息，xxx街道xxx小区xxx栋xxx
     */
    @Column(length = 128)
    private String address;

    /**
     * 是否为默认地址
     */
    private Boolean isDefault;

    /**
     * 是否有效
     */
    private Boolean valid;

    /**
     * 收货人手机号
     */
    @Column(length = 32)
    private String mobile;

    /**
     * 收货人姓名
     */
    @Column(length = 32)
    private String name;

    /**
     * 收货人性别：先生，女士
     */
    private Integer sex;

    /**
     * 用户地址描述
     */
    @Column(length = 128)
    private String description;

    public static UserAddressPO of() {
        return new UserAddressPO();
    }
}
